// Core Utilities Module v2.5.0 const CoreUtils = { async validateAddress(address) { try { const pattern = /^(0x)?[0-9a-fA-F]{40}$/; return pattern.test(address) && await this.checksumAddress(address); } catch (e) { console.error('Address validation failed:', e); return false; } }, async checksumAddress(address) { const addr = address.toLowerCase().replace('0x', ''); const hash = await this.keccak256(addr); let ret = '0x'; for (let i = 0; i < addr.length; i++) { if (parseInt(hash[i], 16) >= 8) { ret += addr[i].toUpperCase(); } else { ret += addr[i]; } } return ret; }, async keccak256(input) { const encoder = new TextEncoder(); const data = encoder.encode(input); return await crypto.subtle.digest('SHA-256', data); }, formatBalance(balance, decimals = 18) { return (BigInt(balance) / BigInt(10 ** decimals)).toString(); }, async verifySignature(message, signature, address) { try { const hash = await this.keccak256(message); const recoveredAddr = await this._recoverAddress(hash, signature); return recoveredAddr.toLowerCase() === address.toLowerCase(); } catch { return false; } } }; export default CoreUtils;